:art: Update Realize

huangqimin001 3 years ago
parent
commit
075abc0089
2 changed files with 44 additions and 11 deletions
  1. 43 10
      api/eqpt_views.py
  2. 1 1
      equipment/models.py

+ 43 - 10
api/eqpt_views.py

@@ -4,7 +4,9 @@ from __future__ import division
4 4
 
5 5
 from django.db.models import Q
6 6
 from django_logit import logit
7
+from django_query import get_query_value
7 8
 from django_response import response
9
+from paginator import pagination
8 10
 from TimeConvert import TimeConvert as tc
9 11
 
10 12
 from equipment.models import (IsolationPointInfo, ThermometerEquipmentInfo, ThermometerMeasureInfo,
@@ -17,11 +19,16 @@ def eqpt_bind(request):
17 19
     point_id = request.POST.get('point_id', '')
18 20
     macid = request.POST.get('macid', '')
19 21
     sn = request.POST.get('sn', '')
22
+    macidsns = get_query_value(request, 'macidsns', val_cast_type='listjson')
20 23
 
21
-    ThermometerEquipmentInfo.objects.update_or_create(macid=macid, defaults={
22
-        'point_id': point_id,
23
-        'sn': sn,
24
-    })
24
+    macidsns = macidsns or [{'macid': macid, 'sn': sn}]
25
+
26
+    for macidsn in macidsns:
27
+        macid, sn = macidsn.get('macid'), macidsn.get('sn')
28
+        ThermometerEquipmentInfo.objects.update_or_create(macid=macid, defaults={
29
+            'point_id': point_id,
30
+            'sn': sn,
31
+        })
25 32
 
26 33
     return response()
27 34
 
@@ -43,17 +50,22 @@ def eqpt_onoff(request):
43 50
 def eqpt_list(request):
44 51
     point_id = request.POST.get('point_id', '')
45 52
     macid = request.POST.get('macid', '')
53
+    page = request.POST.get('page', 1)
54
+    num = request.POST.get('num', 20)
46 55
 
47 56
     eqpts = ThermometerEquipmentInfo.objects.filter(point_id=point_id, status=True)
48 57
     if macid:
49 58
         eqpts = eqpts.filter(macid=macid)
50
-    eqpts = [eqpt.data for eqpt in eqpts]
51 59
 
52
-    total_num = len(eqpts)
53
-    active_num = len([1 for eqpt in eqpts if eqpt.get('active_status') == ThermometerEquipmentInfo.ONLINE])
60
+    total_num = eqpts.count()
61
+    active_num = eqpts.filter(active_status=ThermometerEquipmentInfo.ONLINE).count()
62
+
63
+    eqpts, left = pagination(eqpts, page, num)
64
+    eqpts = [eqpt.data for eqpt in eqpts]
54 65
 
55 66
     return response(data={
56 67
         'eqpts': eqpts,
68
+        'left': left,
57 69
         'total_num': total_num,
58 70
         'active_num': active_num,
59 71
         'unactive_num': total_num - active_num,
@@ -64,21 +76,42 @@ def eqpt_list(request):
64 76
 def eqpt_result(request):
65 77
     point_id = request.POST.get('point_id', '')
66 78
     kw = request.POST.get('kw', '')
79
+    page = request.POST.get('page', 1)
80
+    num = request.POST.get('num', 20)
67 81
 
68 82
     try:
69 83
         point = IsolationPointInfo.objects.get(point_id=point_id, status=True)
70 84
     except IsolationPointInfo.DoesNotExist:
71 85
         return response(IsolationPointStatusCode.ISOLATIONPOINT_NOT_FOUND)
72 86
 
73
-    logs = ThermometerMeasureInfo.objects.filter(point_id=point_id, point_measure_ymd=tc.local_string(format='%Y-%m-%d'), point_measure_window=point.point_measure_window, status=True).order_by('-pk')
74
-
75 87
     eqpts = ThermometerEquipmentInfo.objects.filter(point_id=point_id, active_status=ThermometerEquipmentInfo.ONLINE, status=True)
88
+    macids = eqpts.values_list('macid', flat=True)
89
+
90
+    logs = ThermometerMeasureInfo.objects.filter(
91
+        point_id=point_id,
92
+        point_measure_ymd=tc.local_string(format='%Y-%m-%d'),
93
+        point_measure_window=point.point_measure_window,
94
+        macid__in=macids,
95
+        status=True,
96
+    ).values('macid', 'temperature')
97
+    logs = {log.get('macid'): log.get('temperature') for log in logs}
98
+
99
+    total_active_eqpt_num = eqpts.count()
100
+    has_upload_temperature_num = len(logs)
101
+    temperature_over_375 = len([1 for temperature in logs.values() if temperature > 37.5])
102
+
76 103
     if kw:
77 104
         eqpts = eqpts.filter(Q(name__icontains=kw) | Q(phone__icontains=kw))
78
-    eqpts = [eqpt.data for eqpt in eqpts]
105
+    eqpts, left = pagination(eqpts, page, num)
106
+    eqpts = [{**eqpt.data, **{'has_upload': eqpt.macid in logs, 'temperature': logs.get(eqpt.macid, 0)}} for eqpt in eqpts]
79 107
 
80 108
     return response(data={
81 109
         'eqpts': eqpts,
110
+        'left': left,
111
+        'total_active_eqpt_num': total_active_eqpt_num,
112
+        'has_upload_temperature_num': has_upload_temperature_num,
113
+        'not_upload_temperature_num': total_active_eqpt_num - has_upload_temperature_num,
114
+        'temperature_over_375': temperature_over_375,
82 115
     })
83 116
 
84 117
 

+ 1 - 1
equipment/models.py

@@ -37,7 +37,7 @@ class IsolationPointInfo(BaseModelMixin):
37 37
             start_t, end_t = window.get('start'), window.get('end')
38 38
             start_dt = tc.string_to_utc_datetime(f'{current_ymd} {start_t}:00')
39 39
             end_dt = tc.string_to_utc_datetime(f'{current_ymd} {end_t}:00')
40
-            if start_dt < current_dt < end_dt:
40
+            if tc.utc_datetime(start_dt, minutes=-30) < current_dt < tc.utc_datetime(end_dt, minutes=30):
41 41
                 return f'{start_t}-{end_t}'
42 42
         return ''
43 43